/**
 * 加解密工具包
 *
 * @author terrfly
 * @site https://www.jeepay.vip
 * @date 2021/5/16 17:35
 */
import { SM4 } from 'gm-crypto'
import appConfig from '@/config/appConfig.js'

let HEX_KEY = null

// 字符串转16进制
function str2hex(str) {
  var val = ''
  for (var i = 0; i < str.length; i++) {
      if (val == '')
          val = str.charCodeAt(i).toString(16)
      else
          val += str.charCodeAt(i).toString(16)
  }
  val += ''
  return val
}

// 获取hex秘钥
function getHexKey(){

  if(!HEX_KEY){

    HEX_KEY = str2hex(appConfig.encryptKey)

  }
  return HEX_KEY
}


// 解密 (http响应数据， 做通用处理)
export function sm4DecryptByResData(data){

  if(!data){
    return data
  }

  let res = SM4.decrypt(data, getHexKey(), {
    inputEncoding: 'base64',
    outputEncoding: 'utf8'
  })

  if(!res){
    return res
  }

  return JSON.parse(res)['originData']
}

// 加密 (http响应数据， 做通用处理)
export function sm4EncryptByReqData(data){

  if(!data){
    return data
  }

  // 加密处理
  let encryptData = SM4.encrypt(JSON.stringify(data), getHexKey(), {
    inputEncoding: 'utf8',
    outputEncoding: 'base64'
  })

  return {encryptData : encryptData}
}

